import pandas as pd
import numpy as np

# 示例数据（替换为你的实际数据）
dates = pd.date_range(start="2018-02-01", end="2023-07-31", freq="D")
employment_rate = np.cumsum(np.random.randn(len(dates)) * 0.1 + 0.5)  # 模拟就业率累加数据
external_var1 = np.sin(np.linspace(0, 10, len(dates)))  # 模拟外部变量（如GDP）
external_var2 = np.random.rand(len(dates)) * 10  # 另一个外部变量

data = pd.DataFrame({
    'date': dates,
    'employment_rate': employment_rate,
    'external_var1': external_var1,
    'external_var2': external_var2
}).set_index('date')

# 划分训练集和测试集
train = data.iloc[:-30]  # 前5年数据
test = data.iloc[-30:]   # 最后30天作为测试集


# 初始化模型（默认参数）
model = SARIMAXForecaster(
    order=(1, 0, 1),
    seasonal_order=(1, 1, 1, 6),  # 假设季节周期为6个月（根据数据调整）
    trend='c'
)

# 训练模型（使用外部变量）
model.fit(y=train['employment_rate'], exog=train[['external_var1', 'external_var2']])

# 预测未来30天（需提供对应的外部变量）
forecast = model.predict(
    steps=30,
    exog_future=test[['external_var1', 'external_var2']]
)

# 评估
metrics = model.evaluate(test['employment_rate'], forecast)
print("评估指标:", metrics)

# 查看模型摘要
print(model.summary())